package com.atguigu.gmall.search;

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

/**
 * @author lfy
 * @Description
 * @create 2023-07-22 14:05
 * 代码操作ES； 分析ES的自动配置
 *
 * 1、ElasticsearchDataAutoConfiguration：
 *      导入：ElasticsearchDataConfiguration.BaseConfiguration.class, 类型转化器
 * 		     ElasticsearchDataConfiguration.RestClientConfiguration.class, Rest客户端配置
 *      以后用这个对ES进行操作
 * 	   【ElasticsearchRestTemplate】;  xxxxTemplate：对这个场景CRUD的操作工具；封装了后面 RestHighLevelClient的模板类
 *
 * 2、ElasticsearchRepositoriesAutoConfiguration： ES仓库配置
 *      ElasticsearchRepositoriesRegistrar： xxxRegistrar；批量给容器中注册组件
 *      @EnableElasticsearchRepositories: 开启ES自动仓库功能； spring-data
 *          1）、只需要写一个Bean，标注好对应的注解，项目启动，SpringBoot就会连接ES自动建立好这个索引
 *          2）、自定义一些接口，直接可以操作ElasticSearch，只需要起好方法名。
 *      自己写一个Bean和xxxRepository即可
 *
 * 3、ElasticsearchRestClientAutoConfiguration: 创造  RestHighLevelClient；发请求的客户端
 *      ElasticsearchRestClientConfigurations.RestClientBuilderConfiguration.class,
 * 		ElasticsearchRestClientConfigurations.RestHighLevelClientConfiguration.class,
 * 		ElasticsearchRestClientConfigurations.RestClientFallbackConfiguration.class
 *
 *
 */
@EnableElasticsearchRepositories(basePackages="com.atguigu.gmall.search.dao")
@SpringCloudApplication
public class SearchMainApplication {

    public static void main(String[] args) {
        SpringApplication.run(SearchMainApplication.class,args);
    }
}
